HTML リンクチェッカー

                          checkhtm.x ver1.01

                                            programmed by Mitsuky



● このプログラムは


  HTML ファイル中の <A HREF="~"> <IMG SRC="~"> <FRAME SRC="~"> で指定
されたファイルが存在するか再帰的にチェックします。サーバーへアップロード
する前にリンク切れがないか調べるのに有効です。ネットワーク上のファイルの
存在は調べられません。

  今のところシフトJIS 専用です。また、オンメモリ動作するため処理が高速な
代わりにメモリを1MBほど消費します。



● インストール


  パスの通ったディレクトリに checkhtm.x をコピーして下さい。

 TwentyOne(Ext氏作)が常駐していた方が良いでしょう(後述)。



● 使い方


 コマンドラインからチェックしたい HTML ファイルを指定して実行します。

checkhtm [option] [ファイル名]

例)    checkhtm index.htm

  指定したファイルを解析し、<A HREF="~"> <IMG SRC="~"> <FRAME SRC="~
"> で指定されたファイルが存在するかどうかを調べ、結果を checkhtm.err に
書き込みます。<A HREF="~"> で指定されたのが HTML ファイルだった場合、そ
のファイルも調べます。但し、外部へのリンク(指定されたのが相対パスでなく、
http:// で始まる絶対パス)だった場合、そのリンク先の存在は調べません。

  ファイル名が省略された時はカレントディレクトリの index.htm をチェック
します。

[option]

 オプションは -N -V のような指定の他、-NV のような指定も可能です。

-Eファイル名 : エラー結果を出力するファイル名(デフォルトは checkhtm.err)

 エラー結果を出力するファイル名を変更したい時に指定します。

-N : TwentyOne の機能を使用しない

 TwentyOne の機能を使用しません。

-V : 詳細を表示する

 調査中のファイル名を逐一表示します。



● checkhtm.err について


  エラー結果を報告するファイル checkhtm.err は ED.X のタグファイル形式で
す。 ED.X(及びその互換テキストエディタ)をご使用の場合、[ESC]-[V] でエ
ラーを起こしたファイルの該当行にジャンプします。

※ X68000 用 MicroEmacs に含まれる tag_jump.el はフルパスのファイル名を
認識しないようですのでこの機能は使えません。

  報告にはエラー・警告・メッセージがあり、エラーは HTML に起因する問題
(リンクがたどれなかった)、警告は checkhtm.x に起因する問題(メモリ不足
等)、メッセージはそれ以外のものです。


<エラー一覧>

・(ファイル名)が読み込めません。

  <A HREF="~"> で指定されたファイルが読み込めません。リンク切れです。該
当するファイルを直して下さい。


<警告一覧>

・再帰可能数の最大値を越えました 以降チェックしません

  checkhtm.x はリンクのリンクのリンク…を再帰的にチェックしますが、これ
が最大数(64階層)を越えています。このようなファイルをチェックしたい場合
は checkhtm.c の NEST_MAX を増やして再コンパイルして下さい(64階層もある
HTML というのは問題があると思いますが…)。

・メモリ不足です 以下の階層をチェックしません

 メモリ不足です。

・(ファイル名)がファイルサイズぶん読み込めません

 ファイルが異常です。


<メッセージ一覧>

・(ファイル名)は外部へのリンクです チェックしません

  checkhtm.x は <A HREF="htmlfile.htm"> や <A HREF="subdir/subhtml.htm">
のような同一のサーバー(またはホスト)上にあるファイルのみをチェックしま
す。<A HREF="http://www.foo.ne.jp/index.htm"> のように他のサーバーにある
ファイルに関してはチェックしません。



● タグについて


 認識するタグは以下の通りです。

<A HREF="~">

  アンカータグです。HTML 文法上は <A NAME="~" HREF="~"> という形式も認
められるのですが、checkhtm.x では A の直後に HREF が来る形式のみ認識しま
す(<A HREF="~" NAME="~"> ならOK)。


<IMG SRC="~">

  イメージタグです。HTML 文法上は <IMG ALT="~" SRC="~"> という形式も認
められるのですが、checkhtm.x では IMG の直後に SRC が来る形式のみ認識し
ます(<IMG SRC="~" ALT="~"> ならOK)。


<FRAME SRC="~">

  フレームタグです。HTML 文法上は <FRAME NAME="~" SRC="~"> という形式
も認められるのですが、checkhtm.x では FRAME の直後に SRC が来る形式のみ
認識します(<FRAME SRC="~" NAME="~"> ならOK)。



● TwentyOne について


  checkhtm.x はファイルの存在チェックに fopen() を使用しています。このた
め、結果的にファイル名に関しては Human68K の仕様をそのまま受け継ぐことに
なります。つまり、

・ファイル名は先頭の8文字+3文字のみをチェック
・大文字小文字を区別しない

  ということです。Human68K 上でのみ使用するのであればこれで問題ないので
すが、WWW では8+3文字以上のファイル名が使われ、大文字小文字が区別され
るため問題が発生します。

例)挙動が異なるファイル名

        longfilename0.htm と longfilename1.htm
        index.htm と INDEX.HTM

  TwentyOne +TC オプション(ファイル名を21文字認識、大文字小文字を区別す
る)を使用すればこれらのファイルを別のものとして扱う事が可能です。そこで
checkhtm.x では TwentyOne が常駐している場合、内部で TwentyOne +TC オプ
ションをセットします。

 その結果、

例)HTML 中での指定
        <A HREF="index.htm">

  があった場合、index.htm がなければ INDEX.HTM があっても「ファイルが読
み込めません」というエラーを出力するようになります。WWW で使用するファイ
ルをチェックするのであれば、この機能を使って下さい。

  TwentyOne が常駐していない、または -N オプションが指定された時はこの機
能は使われません。



● コメント


  いわゆるひとつの社内ツールです(電脳倶楽部の HTML チェック用)。そのた
め(?)シフト JIS 専用で HTML の解析が甘いのですが、実用上は問題ない範
囲だと思います。 WebXpression の HTML 解析ルーチンを流用すれば JIS/EUC 
対応でかつ強力にタグを認識できるのですが、バージョンアップが激しい上に少
し重いので今回は見送りました。



● 謝辞


  本ソフトウェアの開発にあたり以下のツールを使用させて頂きました。作者の
方々に深く感謝申し上げます。

        GCC ver1.42     FSF/吉野智興 氏
        LIBC            Project LIBC Group
        MicroEmacs ver1.43 rel.5c5 
                        icam/homy/lika/SALT/PEACE/SHUNA/rima/Sharl 各氏
        HAS060.X        YuNK/かまだ氏
        HLK.X           SALT氏


  また、本ソフトウェアは TwentyOne(Ext氏作)に同梱の options.o をリ
ンクしています。


 以上の制作者の方々に感謝申し上げます。



● 配布規定


  配布&改造自由のフリーウェアです。ソースの引用&組み込みも自由です。い
ずれの場合も連絡の必要はありません。

  また、大変申し訳ありませんが、本プログラムは無保証であり本プログラムに
起因するいかなる損失にも免責とさせて頂きます。



                                                    満開製作所/山口光樹


(EOF)